GAE オートスケール
#GAE #GoogleCloud
インスタンスの管理方法  |  Node.js 用 App Engine スタンダード環境に関するドキュメント  |  Google Cloud
インスタンスのクラス / App Engine スタンダード環境  |  App Engine ドキュメント  |  Google Cloud
Troubleshooting elevated latency in your app  |  App Engine ドキュメント
App Engine, Scheduler settings, and instance count. | by Colt McAnlis | Google Cloud - Community | Medium
App Engine Scaling Config - Qiita
スケーリングタイプ
自動 👈 これが新しいし柔軟
基本
手動
自動スケーリング
target_cpu_utilization (default: 0.6)
CPU 使用率に基づくスケーリング、これを超えたらスケールする
コンソールで Megacycles/sec を見れる
インスタンスのクラスによると F2 は 1.2 GHz から計算できる? かと思ったけどどういう計算だろ?
https://gyazo.com/a774040c83c1ed322a567a97da893214
2021/6/1 最近 CPU Utilization が Cloud Monitoring から見えるようになった
https://gyazo.com/d0da7191ce5a1d76d9cb086920458333
target_throughput_utilization
同時リクエストが max_concurrent_requests * target_throughput_utilization に達したら新しいインスタンスを立てる
max_concurrent_requests
これに達したら増える、と書いてあるけど嘘だと思う
これを超えると新しいインスタンスに振られる
min_pending_latency と max_pending_latency
2021/6/1 時点の個人的な理解
app.yaml 構成ファイル  |  App Engine スタンダード環境での Go 1.12 以降に関するドキュメント
あまりドキュメントを読んでも明確でないし、これ max~ だけでいいんじゃないか? とも思えるけど
min_pending_latency 経過するまでの間は、latency 起因のスケール(インスタンスの起動)はしない
この間にリクエストキューが空くかもしれない
? この間に CPU Utilization が下がるかもしれない?
min ~ max の間にインスタンスが見つけられなければ作る
max_pending_latency を超えると新しいインスタンスが立つ
latency 起因によるスケール
? いずれも保留キューに入ってからの話?
リクエストがさばけている(max_concurrent_request * target_throughput に満たない同時リクエスト数の間?)は保留キューに入らない? "保留キュー" は常に通るものなのか、閾値を超えた際の一時的な待機場所なのか明確でないのでよくわからない
ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: version.automatic_scaling.max_pending_latency (30.0) must be in the range 0.01, 15.0.
ちなみに max_pending_latency は 15秒を超えて設定できない